// =============================1.string类型===================================
var a1;
a1 = '1';
var a2 = '2';
var a3 = '3'; /// ts自动判断类型
// ============================2.number类型=====================================
var b1;
b1 = 1;
var b2 = 1;
var b3 = 3; /// ts自动判断类型
// ============================3.bool类型=======================================
var c1;
c1 = false;
var c2 = false;
var c3 = false; /// ts自动判断类型
// =============================4.字面量类型=====================================
var d1;
d1 = 'web';
d1 = '12';
//=================================5.any 任何类型 没有类型校验====================
var e1;
e1 = '123';
e1 = 123;
e1 = [];
var e2 = [];
e2 = e1; // any可以给其他数据任意赋值
// ====================6. 未知类型 安全的any类型===========================
var f1; // 任意类型，但不可以随意给其他数据赋值
f1 = 1;
f1 = '1';
f1 = {};
var f2 = '123';
f2 = f1; // 类型断言   表示类型相同时才能赋值
// ==============7.空值(undefined) 没有任何类型 常用于没有返回值的方法=========
var g1; // void表示空值，只可以赋 undefined 值
g1 = undefined;
function g2() {
    console.log(1234);
}
// ===========================8.永远不会有值的一种类型=======================
var h1; // never 表示没有值 ，也不可以赋值
function h2() {
    throw new Error('1234');
}
// ===========================9.object 语法：object | {}==========================
var i1;
i1 = { id: '1', num: 2, str: {} };
var i2 = {};
i2 = { id: 2, num: 1 };
var i3;
// =========================10.array 语法：类型[] | Array<类型>====================
var j1;
j1 = [1, 2, 3];
var j2;
j2 = [1, 2, 3, 4];
var j3;
j3 = ['1', '2', '3', '4'];
var j4;
j4 = ['1', '2'];
// ===============11. 固定长度的数组 语法：[类型，类型.....]================
var k1;
k1 = [1, '2', {}];
// ===================12.枚举类型 语法：enum value{v1,v2}==========================
var l1 = 1 | 2 | 3;
l1 = 1;
var type;
(function (type) {
    type[type["\u674E\u6C5F\u534E"] = 250] = "\u674E\u6C5F\u534E";
    type[type["\u95ED\u5634\u5427\u4F60"] = 400] = "\u95ED\u5634\u5427\u4F60";
})(type || (type = {}));
var l2;
l2 = type.李江华;
console.log(l2);
// ========================13.类型别名 语法： type value:==========================
// ========================14.类型断言 语法： prop as type | <type>prop============
// 
// ========================15.函数  关心其参数类型和返回值类型=======================
// =======================16.接口 interface 语法：interface{}======================
// =========================17.泛型 <T>============================================
// 定义一个函数或类时，有些情况下无法确定其中要使用的具体类型（返回值、参数、属性的类型不能确定）
// fn2(null)//类型受限制
//any不安全 
//泛型灵活        
